home *** CD-ROM | disk | FTP | other *** search
- 0 REM -- FILENAME: "BATLSHIP.BIN".
- 1 REM *REVISED BATTLESHIP* UPLOADED TO THE C.I.S. CBMART FORUM 03/25/1995.
- 10 CLR:CH=0:PH=0:PRINT"[147]":POKE53280,7:POKE53281,7:PRINT"[210]ANDOMIZING..."
- 20 C=RND(-TI):FORY=0TO999:C=RND(1):NEXTY:PRINT"[147]"+CHR$(142)
- 30 FORY=1024TO1063
- 40 C=(RND(1)*16)+1:IFC=7THEN40
- 50 POKEY,160:POKEY+54272,C:NEXTY
- 60 FORY=1063TO2023STEP40
- 70 C=(RND(1)*16)+1:IFC=7THEN70
- 80 POKEY,160:POKEY+54272,C:NEXTY
- 90 FORY=2023TO1984STEP-1
- 100 C=(RND(1)*16)+1:IFC=7THEN100
- 110 POKEY,160:POKEY+54272,C:NEXTY
- 120 FORY=1984TO1024STEP-40
- 130 C=(RND(1)*16)+1:IFC=7THEN130
- 140 POKEY,160:POKEY+54272,C:NEXTY
- 150 POKE657,128:POKE145,254
- 160 A=1153:B=1181:D=1
- 170 FORF=1152TO1181:POKEF+54272,6:NEXTF
- 180 READC
- 190 FORX=BTOASTEP-1:POKEX,C:POKEX+54272,10:POKEX,32:NEXTX
- 200 POKEX,C
- 210 A=A+2:D=D+1
- 220 IFD=13THEN240
- 230 GOTO180
- 240 A=1238:B=1262:D=1
- 250 FORF=1236TO1260:POKEF+54272,1:NEXTF
- 260 READC
- 270 FORX=BTOASTEP-2:POKEX,C:POKEX+54272,1:POKEX,32:NEXTX:POKEX,C
- 280 A=A+2:D=D+1
- 290 IFD=9THEN310
- 300 GOTO260
- 310 A=1396:B=1414:D=1
- 320 FORF=1394TO1414:POKEF+54272,1:NEXTF
- 330 READC
- 340 FORX=BTOASTEP-2:POKEX,C:POKEX+54272,1:POKEX,32:NEXTX:POKEX,C
- 350 A=A+2:D=D+1
- 360 IFD=11THEN380
- 370 GOTO330
- 380 FORX=1755TO1772:READA:POKEX,A:POKEX+54272,12:NEXTX
- 390 FORX=1714TO1732:READB:POKEX,B:POKEX+54272,6:NEXTX
- 400 FORX=1677TO1689:READC:POKEX,C:POKEX+54272,6:NEXTX
- 410 FORX=1639TO1647:READD:E=E+1:POKEX,D:POKEX+54272,6:NEXTX
- 420 POKE1607,101:POKE1567,223:POKE1607+54272,6:POKE1567+54272,6:POKE198,0
- 430 PRINT:PRINT:PRINT" PRESS ANY KEY TO BEGIN [146]"
- 440 X=1772
- 450 POKEX,115:FORL=1TO25:NEXTL
- 460 POKEX,113:FORL=1TO25:NEXTL
- 470 POKEX,107:FORL=1TO25:NEXTL
- 480 POKEX,114:FORL=1TO25:NEXTL
- 490 GETA$:IFA$=""THEN450
- 500 POKE53280,7:POKE53281,7
- 510 PRINT"[147]" :PRINT" INSTRUCTIONS [146]"
- 520 PRINT" ------------"
- 530 PRINT:PRINT
- 540 PRINT" WELCOME TO THE COMMODORE VERSION OF"
- 550 PRINT:PRINT" BATTLESHIP. THE GAME PLAYS SIMILARLY"
- 560 PRINT:PRINT" TO THE BOARD GAME OF THE SAME NAME."
- 570 PRINT:PRINT" YOU WILL HIDE THREE OF YOUR SHIPS "
- 580 PRINT:PRINT" ON AN EIGHT BY EIGHT GRID, AND TRY"
- 590 PRINT:PRINT" TO SINK THE COMMODORE'S SHIPS"
- 600 PRINT:PRINT" BEFORE HE SINKS YOURS."
- 610 PRINT:PRINT:PRINT" HIT ANY KEY TO CONTINUE [146]"
- 620 GETA$:IFA$=""THEN620
- 630 PRINT"[147]"
- 640 PRINT" INSTRUCTIONS, CONTINUED [146]"
- 650 PRINT
- 660 PRINT:PRINT" THE GRID IS LABELLED FROM 1 TO 8"
- 670 PRINT:PRINT" ON THE TOP AND FROM A TO H ON THE"
- 680 PRINT:PRINT" SIDES. FOR EXAMPLE, IF YOU ENTERED"
- 690 PRINT:PRINT" IN B7 FOR A SHIP'S POSITION, IT WILL"
- 700 PRINT:PRINT" APPEAR OVER 2 AND DOWN SEVEN ON THE"
- 710 PRINT:PRINT" GRID. THE COMMODORE HAS THREE SHIPS"
- 720 PRINT:PRINT" ALSO; THE FIRST ONE TO SINK THE"
- 730 PRINT:PRINT" OPPONENT'S SHIPS IS THE WINNER.":POKE162,0:WAIT162,64
- 740 POKE198,0:PRINT:PRINT:PRINT" HIT ANY KEY TO BEGIN [146]"
- 750 GETA$:IFA$=""THEN750
- 760 DATA 32,13,9,14,4,45,7,1,13,5,19,32
- 770 DATA 16,18,5,19,5,14,20,19
- 780 DATA 2,1,20,20,12,5,19,8,9,16
- 790 DATA 95,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,105,91
- 800 DATA 95,160,160,87,160,160,160,87,160,160,160,87,160,160,160,87,160,160,105
- 810 DATA 233,160,160,160,160,160,160,160,160,160,160,160,223
- 820 DATA 233,160,192,160,192,160,32,32,101
- 830 CLR
- 840 REM INPUT PLAYER'S SHIP POSITIONS
- 850 POKE53280,7:POKE53281,7
- 860 PRINT"[147]"
- 870 PRINT" ENTRY OF SHIPS POSITIONS"
- 880 PRINT:PRINT:PRINT
- 890 PRINT" CO-ORDINATES OF THE FIRST SHIP: ";:GOSUB2150:GOSUB1990
- 900 IFER=0THENPS$(1)=X$:GOTO920
- 910 GOTO840
- 920 PRINT:PRINT" CO-ORDINATES OF THE SECOND SHIP: ";:GOSUB2150:GOSUB1990
- 930 IFER=0THENPS$(2)=X$:GOTO950
- 940 GOTO840
- 950 PRINT:PRINT" CO-ORDINATES OF THE THIRD SHIP: ";:GOSUB2150:GOSUB1990
- 960 IFER=0THENPS$(3)=X$:GOTO980
- 970 GOTO840
- 980 PRINT:PRINT" IS THIS CORRECT (Y/N)? ";:GOSUB2150
- 990 IFLEFT$(X$,1)="Y"THEN1010
- 1000 GOTO840
- 1010 FORZ=1TO3:A=1187:FORX=65TO72
- 1020 IFLEFT$(PS$(Z),1)=CHR$(X)THEN1040
- 1030 A=A+2:NEXTX
- 1040 PL(Z)=A
- 1050 NEXTZ
- 1060 FORZ=1TO3:A=0:FORX=49TO56
- 1070 IFRIGHT$(PS$(Z),1)=CHR$(X)THEN1090
- 1080 A=A+40:NEXTX
- 1090 PL(Z)=PL(Z)+A
- 1100 NEXTZ
- 1110 POKE53280,7:POKE53281,7:REM DRAW BOARD
- 1120 PRINT"[147]"
- 1130 PRINT" B A T T L E S H I P [146]"
- 1140 C=1:FORX=1147TO1161STEP2:POKEX,C:POKEX+54272,2:C=C+1:NEXTX
- 1150 C=1:FORX=1166TO1180STEP2:POKEX,C:POKEX+54272,6:C=C+1:NEXTX
- 1160 C=49:FORX=1185TO1465STEP40:POKEX,C:POKEX+54272,2:C=C+1:NEXTX
- 1170 C=49:FORX=1204TO1484STEP40:POKEX,C:POKEX+54272,6:C=C+1:NEXTX
- 1180 C=81:X=1187
- 1190 Y=X+14:FORA=XTOYSTEP2:POKEA,C:POKEA+54272,1:NEXTA
- 1200 X=X+40
- 1210 FORA=1TO3:POKEPL(A),218:B=PL(A)+54272:POKEZ,1:NEXTA
- 1220 IFX=1507THENX=1206
- 1230 IFX=1526THEN1250
- 1240 GOTO1190
- 1250 REM COMPUTER SHIP LOCATIONS
- 1260 FORB=1TO3
- 1270 A=1204
- 1280 X=INT(RND(1)*8)+1
- 1290 FORY=1TO8
- 1300 IFY=XTHEN1320
- 1310 A=A+40:NEXTY
- 1320 X=INT(RND(1)*16)+1
- 1330 FORY=1TO15STEP2
- 1340 IFY=XTHEN1320
- 1350 NEXTY
- 1360 CL(B)=A+X
- 1370 NEXTB
- 1380 IFCL(1)=CL(2)THEN1250
- 1390 IFCL(2)=CL(3)THEN1250
- 1400 IFCL(3)=CL(1)THEN1250
- 1410 G=0
- 1420 IFG=0THEN1430
- 1430 REM PLAYER'S SHOT ROUTINE
- 1440 G=1
- 1450 PRINT" ----PLAYER----- ---COMMODORE---"
- 1460 POKE781,15:SYS59903
- 1470 POKE214,14:PRINT:PRINT" YOUR SHOT: ";:GOSUB2150
- 1480 GOSUB1990:IFER=0THENS$=X$:GOTO1500
- 1490 GOTO1460
- 1500 A=1206:B=65
- 1510 IFLEFT$(S$,1)=CHR$(B)THEN1530
- 1520 B=B+1:A=A+2:GOTO1510
- 1530 C=0:D=49
- 1540 IFRIGHT$(S$,1)=CHR$(D)THEN1560
- 1550 C=C+40:D=D+1:GOTO1540
- 1560 PS=A+C
- 1570 IF(PEEK(PS)=86)OR(PEEK(PS)=214)THEN1460
- 1580 IFPS=CL(1)THEN1620
- 1590 IFPS=CL(2)THEN1620
- 1600 IFPS=CL(3)THEN1620
- 1610 POKEPS,86:POKEPS+54272,6:GOTO1640
- 1620 POKEPS,214:POKEPS+54272,2:PH=PH+1
- 1630 IFPH=3THEN1850
- 1640 REM COMPUTERS SHOT ROUTINE
- 1650 A=1145
- 1660 X=INT(RND(1)*8)+1
- 1670 FORY=0TO7
- 1680 IFY=XTHEN1700
- 1690 A=A+40:NEXTY
- 1700 REM
- 1710 X=INT(RND(1)*16)+1
- 1720 FORY=1TO15STEP2
- 1730 IFY=XTHEN1710
- 1740 NEXTY
- 1750 CS=A+X
- 1760 IF(PEEK(CS)=86)OR(PEEK(CS)=214)THEN1640
- 1770 IFCS=PL(1)THEN1810
- 1780 IFCS=PL(2)THEN1810
- 1790 IFCS=PL(3)THEN1810
- 1800 POKECS,86:POKECS+54272,2:GOTO1830
- 1810 POKECS,214:POKECS+54272,6:CH=CH+1
- 1820 IFCH=3THEN1900
- 1830 PRINT:PRINT:PRINT:PRINT:PRINT" SCORE[146]=";PH;" SCORE[146]=";CH
- 1840 POKE209,128:POKE210,6:POKE211,0:POKE214,14:POKE1641,32:POKE1640,32:GOTO1460
- 1850 FORL=1TO1000:NEXTL:PRINT"[147]"
- 1860 PRINT" GAME OVER"
- 1870 PRINT:PRINT
- 1880 PRINT" YOU WIN[146]"
- 1890 GOTO1940
- 1900 FORL=1TO1000:NEXTL:PRINT"[147]"
- 1910 PRINT" GAME OVER"
- 1920 PRINT:PRINT
- 1930 PRINT" I WIN[146]"
- 1940 PRINT:PRINT:PRINT:POKE162,0:WAIT162,128:POKE198,0
- 1950 PRINT" DO YOU WANT TO PLAY AGAIN (Y/N)? ";:GOSUB2150
- 1960 IFLEFT$(X$,1)="Y"THEN830
- 1970 CLR:RUN2180
- 1980 :
- 1990 REM INPUT ERROR-CHECK
- 2000 :
- 2010 ER=0 : REM ER=0 MEANS "NO ERROR".
- 2020 :
- 2030 REM IS INPUT 2 CHARACTERS LONG?
- 2040 IFLEN(X$)<>2THENER=1
- 2050 :
- 2060 REM IS FIRST CHAR A LETTER A-H?
- 2070 IFLEFT$(X$,1)<"A"ORLEFT$(X$,1)>"H"THENER=1
- 2080 :
- 2090 REM IS SECOND CHAR A NUMBER 1-8?
- 2100 IFRIGHT$(X$,1)<"1"ORRIGHT$(X$,1)>"8"THENER=1
- 2110 :
- 2120 REM WE'RE DONE HERE, REPORT BACK!
- 2130 RETURN
- 2140 STOP
- 2150 REM SPECIAL INPUT ROUTINE...
- 2160 CLOSE1:OPEN1,0:INPUT#1,X$:PRINT:CLOSE1:RETURN
- 2170 STOP
- 2180 END
-